import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Armas here.
 * 
 * @author (Fco Fernando Gosch Acosta) 
 * @version (1.0)
 */
public class Armas extends Gravitacion
{
    protected int vida; 
    protected SimpleTimer rotacion;
    protected int lapsoRotacion;
    protected int gradosPosicion;
    protected int gradosMira;
    GreenfootSound subenivel = new GreenfootSound("subenivel.wav");
    
    /**
     * Constructor para Armas inicia la cantidad de vida
     *
     * @param unaVida cantidad de vida a asignar
     */
    public Armas(int unaVida, int unGrado)
    {
        vida = unaVida;
        rotacion = new SimpleTimer();
        rotacion.mark();
        lapsoRotacion = 200;
        gradosPosicion = unGrado;
        gradosMira = 0;
    }
    
    /**
     * Metodo dameVida pregunta la vida actual del arma
     *
     * @return el valor de la vida actual
     */
    public int dameVida()
    {
        return vida;
    }
    
    /**
     * Metod sigueRaton hace que las armas apunten hacia el mause
     *
     */
    public void sigueRaton()
    {
        MouseInfo raton = Greenfoot.getMouseInfo();  
        
        if (raton != null)   
            turnTowards(raton.getX(), raton.getY());
    }      
    
    /**
     * Metodo quitaVida a la vida le resta el daño
     *
     * @param unDanio el daño a restar
     */
    public void quitaVida(int unDanio)
    {
        vida = vida - unDanio;
    }
       
    
    /**
     * Checa si esta al borde del mundo 
     * 
     * @return regresa true si esta al borde y false si no lo esta
     */
    public boolean alBorde()
    {
        if(getX() < 160 || getX() > getWorld().getWidth() - 10)
            return true;
        if(getY() < 10 || getY() > getWorld().getHeight() - 10)
            return true;
        else
            return false;
    }        
    
    /**
     * Metodo gravita para colocarse en una posicion de de el planeta
     *
     */
    public void gravita()
    {
        int xt = ((Espacio) getWorld()).dameXTierra();
        int yt = ((Espacio) getWorld()).dameYTierra();
        int angt = ((Espacio) getWorld()).dameAnguloTierra();
        

        int xa = (xt + (int)(60 * Math.cos(Math.toRadians(gradosPosicion ))));
        int ya = (yt + (int)(60 * Math.sin(Math.toRadians(gradosPosicion ))));
        setLocation(xa, ya);
        
    }
    
    /**
     * Act - do whatever the Armas wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {
        // Add your action code here.
    }    
}
